]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
global: Clean up the code that actually sets the shape on the stage
authorJasper St. Pierre <jstpierre@mecheye.net>
Sat, 18 May 2013 22:51:58 +0000 (18:51 -0400)
committerJasper St. Pierre <jstpierre@mecheye.net>
Mon, 8 Jul 2013 21:05:16 +0000 (17:05 -0400)
Instead of having "dummy" setters that do work, split out the parts
that do work into their own function.

https://bugzilla.gnome.org/show_bug.cgi?id=700735

src/shell-global.c

index 5629b622fa3d214d12aaa107a32d6593519aad2e..c448a7abc58aa5379583976d5bac15f461e2fb5a 100644 (file)
@@ -604,6 +604,19 @@ focus_actor_changed (ClutterStage *stage,
   sync_stage_window_focus (global);
 }
 
+static void
+sync_input_region (ShellGlobal *global)
+{
+  MetaScreen *screen = global->meta_screen;
+
+  if (global->gtk_grab_active)
+    meta_empty_stage_input_region (screen);
+  else if (global->input_mode == SHELL_STAGE_INPUT_MODE_FULLSCREEN || !global->input_region)
+    meta_set_stage_input_region (screen, None);
+  else
+    meta_set_stage_input_region (screen, global->input_region);
+}
+
 /**
  * shell_global_set_stage_input_mode:
  * @global: the #ShellGlobal
@@ -623,24 +636,12 @@ void
 shell_global_set_stage_input_mode (ShellGlobal         *global,
                                    ShellStageInputMode  mode)
 {
-  MetaScreen *screen;
-
-  g_return_if_fail (SHELL_IS_GLOBAL (global));
-
-  screen = meta_plugin_get_screen (global->plugin);
-
-  if (global->gtk_grab_active)
-    meta_empty_stage_input_region (screen);
-  else if (mode == SHELL_STAGE_INPUT_MODE_FULLSCREEN || !global->input_region)
-    meta_set_stage_input_region (screen, None);
-  else
-    meta_set_stage_input_region (screen, global->input_region);
+  if (mode == global->input_mode)
+    return;
 
-  if (mode != global->input_mode)
-    {
-      global->input_mode = mode;
-      g_object_notify (G_OBJECT (global), "stage-input-mode");
-    }
+  global->input_mode = mode;
+  sync_input_region (global);
+  g_object_notify (G_OBJECT (global), "stage-input-mode");
 }
 
 /**
@@ -766,10 +767,7 @@ shell_global_set_stage_input_region (ShellGlobal *global,
   global->input_region = XFixesCreateRegion (global->xdisplay, rects, nrects);
   g_free (rects);
 
-  /* set_stage_input_mode() will figure out whether or not we
-   * should actually change the input region right now.
-   */
-  shell_global_set_stage_input_mode (global, global->input_mode);
+  sync_input_region (global);
 }
 
 /**
@@ -1299,7 +1297,7 @@ grab_notify (GtkWidget *widget, gboolean was_grabbed, gpointer user_data)
   global->gtk_grab_active = !was_grabbed;
 
   /* Update for the new setting of gtk_grab_active */
-  shell_global_set_stage_input_mode (global, global->input_mode);
+  sync_input_region (global);
 }
 
 /**